﻿using System;

public static class Customer {
    /// <summary>
    /// 달력에 이벤트를 추가
    /// </summary>
    /// <param name="userId">이벤트 작성자 ID</param>
    /// <param name="calendarId">이벤트를 추가할 달력의 ID</param>
    /// <param name="name">이벤트 이름</param>
    /// <param name="description">이벤트 설명</param>
    /// <param name="location">이벤트 위치</param>
    /// <param name="utcStart">이벤트 시작</param>
    /// <param name="utcEnd">이벤트 끝</param>
    /// <param name="allDay">이벤트가 종일인지 여부입니다. 종일인 경우
    /// 시작 및 끝 TIMES는 역할을 수행하지 않습니다.</param>
    /// <remarks>같은 날 시작하고 끝나는 이벤트만 지원됩니다.</remarks>
    /// <returns>추가된 이벤트의 ID</returns>
    public static int Add(int userId, string name, string phone, string email) {
        var db = UserHelper.DatabaseInstance;
        db.Query(@"INSERT INTO Customer
                    (UserId,   Name,   Phone,    Email)
             Values (@0,       @1,     @2,       @3)",
                    userId, name, phone, email);

        return Convert.ToInt32(db.GetLastInsertId());
    }

    /// <summary>
    /// 이벤트 편집
    /// </summary>
    /// <see>Event.AddEvent</see>>
    /// <param name="eventId">편집할 이벤트 ID</param>
    public static void Edit(int Id, int userId, string name, string phone, string email) {
        var db = UserHelper.DatabaseInstance;

        db.Execute(@"
                    UPDATE Events
                    SET UserId = @1, Name = @2, Phone = @3, Email = @4
                    WHERE Id = @0",
                    Id, userId, name, phone, email);
    }

    /// <summary>
    /// 이벤트 삭제
    /// </summary>
    /// <param name="eventId">삭제할 이벤트 ID</param>
    public static void Delete(int eventId) {
        var db = UserHelper.DatabaseInstance;

        db.Execute("DELETE FROM EVENTS WHERE Id = @0", eventId);
    }

    /// <summary>
    /// 사용자-달력-이벤트 짝에 대한 정보 가져오기
    /// </summary>
    /// <param name="userId">찾을 사용자 ID</param>
    /// <param name="eventId">찾을 이벤트 ID</param>
    /// <returns>해당 쌍과 일치하는 결과가 없는 경우 Null이고 그렇지 않으면 쌍과 관련된 정보입니다.</returns>
    public static dynamic GetUserCustomer(int userId, int customerId) {
        var db = UserHelper.DatabaseInstance;
        return db.QuerySingle(@"
            SELECT *
            FROM Customer
            WHERE Id = @0",
            customerId);
    }

    public static dynamic GetCalendarEvents(int calendarId) {
        var db = UserHelper.DatabaseInstance;
        return db.Query("SELECT * FROM Events WHERE CalendarId = @0", calendarId);
    }
}